<?php

class Home extends TPage {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS_POR_APROBAR = "arrPorAprobar";
  const SESION_DATOS_ACTIVOS = "arrActivos";
  const CAMPO_ORDEN_DATAGRID_POR_APROBAR = "CampoOrdenDataGridPorAprobar";
  const CAMPO_ORDEN_DATAGRID_ACTIVOS = "CampoOrdenDataGridActivos";
  const TABLA_POR_APROBAR = 0;
  const TABLA_ACTIVOS = 1;
  const FUNCION_VER = "Ver";
  const REGISTROS_POR_PAGINA_DEFECTO = "10";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author JBC, 10/12/2011
   */
  private function obtenerDatos($sesion) {
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arrFiltrosDgPorAprobar = Utilidades::obtenerSessionPorNombre($nombrePagina.Utilidades::SESION_SUFIJO_FILTROS.self::SESION_DATOS_POR_APROBAR);
      $arrFiltrosDgActivos = Utilidades::obtenerSessionPorNombre($nombrePagina.Utilidades::SESION_SUFIJO_FILTROS.self::SESION_DATOS_ACTIVOS);
      $cargarFiltrosSesion = Utilidades::isNull(Utilidades::obtenerSessionPorNombre(Utilidades::SESION_CARGAR_FILTROS_SESION),"0");

      $oUsuarioWf = new UsuarioWf();
      $oUsuarioWf = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      $oEmpresa = Utilidades::obtenerEmpresaActiva($oUsuarioWf);

      //-----------------------------------
      //obtiene los flujos por aprobar
      if(Utilidades::isNullOrEmpty($sesion) || $sesion == self::SESION_DATOS_POR_APROBAR){
        //obtiene valores de los controles o de la sesion de filtros
        if(Utilidades::isNullOrEmpty($arrFiltrosDgPorAprobar) || $cargarFiltrosSesion == "0"){
          $strFiltroNombreFlujoDgPorAprobar = Utilidades::isNull($this->txtFiltroNombreFlujoDgPorAprobar->Text, "-1");
          $strWorkflowDgPorAprobar = Utilidades::isNull($this->ddlWorkflowDgPorAprobar->obtenerSelectedValue(), "-1");
        } else {
          $strFiltroNombreFlujoDgPorAprobar = Utilidades::isNull($arrFiltrosDgPorAprobar[$this->txtFiltroNombreFlujoDgPorAprobar->ClientID],"-1");
          $strWorkflowDgPorAprobar = Utilidades::isNull($arrFiltrosDgPorAprobar[$this->ddlWorkflowDgPorAprobar->ClientID], "-1");
        }
        $arrFlujo = WfFlujo::obtenerPorAprobar($oEmpresa["Id"], $oUsuarioWf->getId(), $strFiltroNombreFlujoDgPorAprobar, '-1', $strWorkflowDgPorAprobar);
        Utilidades::grabarSessionPorNombre(self::SESION_DATOS_POR_APROBAR, $arrFlujo[self::TABLA_POR_APROBAR]);
      }

      //-----------------------------------
      //obtiene los flujos activos
      if(Utilidades::isNullOrEmpty($sesion) || $sesion == self::SESION_DATOS_ACTIVOS){
        //obtiene valores de los controles o de la sesion de filtros
        if(Utilidades::isNullOrEmpty($arrFiltrosDgActivos) || $cargarFiltrosSesion == "0"){
          $strFiltroNombreFlujoDgActivos = Utilidades::isNull($this->txtFiltroNombreFlujoDgActivos->Text, "-1");
          $strFiltroFechaInicioDgActivos = Utilidades::isNull($this->txtFiltroFechaInicioDgActivos->Text, "-1");
          $strFiltroFechaTerminoDgActivos = Utilidades::isNull($this->txtFiltroFechaTerminoDgActivos->Text, "-1");
          $strWorkflowDgActivos = Utilidades::isNull($this->ddlWorkflowDgActivos->obtenerSelectedValue(), "-1");
        } else {
          $strFiltroNombreFlujoDgActivos = Utilidades::isNull($arrFiltrosDgActivos[$this->txtFiltroNombreFlujoDgActivos->ClientID], "-1");
          $strFiltroFechaInicioDgActivos = Utilidades::isNull($arrFiltrosDgActivos[$this->txtFiltroFechaInicioDgActivos->ClientID], "-1");
          $strFiltroFechaTerminoDgActivos = Utilidades::isNull($arrFiltrosDgActivos[$this->txtFiltroFechaTerminoDgActivos->ClientID], "-1");
          $strWorkflowDgActivos = Utilidades::isNull($arrFiltrosDgActivos[$this->ddlWorkflowDgActivos->ClientID], "-1");
        }
        $arrActivos = WfFlujo::obtenerActivos($oEmpresa["Id"], $oUsuarioWf->getId(), $strFiltroNombreFlujoDgActivos, $strFiltroFechaInicioDgActivos, $strFiltroFechaTerminoDgActivos,$strWorkflowDgActivos);
        Utilidades::grabarSessionPorNombre(self::SESION_DATOS_ACTIVOS, $arrActivos);
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author JBC, 11/11/2011
   */
  private function actualizaInterfaz($sesion) {
    try {
      $arrPorAprobar = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS_POR_APROBAR);
      $arrActivos = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS_ACTIVOS);
    } catch (Exception $e) {
      $arrPorAprobar = null;
      $arrActivos = null;
    }

    //obtiene filtros de la sesion
    $this->cargarFiltrosSesionDgPorAprobar();
    $this->cargarFiltrosSesionDgActivos();
    Utilidades::grabarSessionPorNombre(Utilidades::SESION_CARGAR_FILTROS_SESION, "0");

    //---------------------------------------------------
    // carga los datos en la grilla Por Aprobar
    if(Utilidades::isNullOrEmpty($sesion) || $sesion == self::SESION_DATOS_POR_APROBAR){
      $totalRegistros = count($arrPorAprobar);
      if($totalRegistros > 0) {
        $this->pnlHolderGrillaDgPorAprobar->Visible = true;
        //carga la grilla a utilizar
        $this->dgPorAprobar->Visible = true;
        $this->dgPorAprobar->DataSource = $arrPorAprobar;
        $this->dgPorAprobar->dataBind();
        Utilidades::configurarPaginadorDataGrid($this->dgPorAprobar->PagerStyle, $totalRegistros, $this->dgPorAprobar->PageSize);
        Utilidades::mostrarTotalRegistrosGrilla($totalRegistros, $this->lblTotalRegistrosDgPorAprobar);
      } else {
        $this->pnlHolderGrillaDgPorAprobar->Visible = false;
        $this->pnlMensajeUsuarioDgPorAprobar->Visible = true;
        $textoMensaje = "No se encontraron registros";
        Utilidades::setPanelMensajeUsuario($this->pnlMensajeUsuarioDgPorAprobar, $textoMensaje, "50%", Utilidades::ESTILO_MENSAJE_ADVERTENCIA);
        //oculta la grilla
        $this->dgPorAprobar->Visible = false;
      }
    }

    //---------------------------------------------------
    // carga los datos en la grilla Activos
    if(Utilidades::isNullOrEmpty($sesion) || $sesion == self::SESION_DATOS_ACTIVOS){
      $totalRegistros = count($arrActivos);
      if($totalRegistros > 0) {
        $this->pnlHolderGrillaDgActivos->Visible = true;
        //carga la grilla a utilizar
        $this->dgActivos->Visible = true;
        $this->dgActivos->DataSource = $arrActivos;
        $this->dgActivos->dataBind();
        Utilidades::configurarPaginadorDataGrid($this->dgActivos->PagerStyle, $totalRegistros, $this->dgActivos->PageSize);
        Utilidades::mostrarTotalRegistrosGrilla($totalRegistros, $this->lblTotalRegistrosDgActivos);
      } else {
        $this->pnlHolderGrillaDgActivos->Visible = false;
        $this->pnlMensajeUsuarioDgActivos->Visible = true;
        $textoMensaje = "No se encontraron registros";
        Utilidades::setPanelMensajeUsuario($this->pnlMensajeUsuarioDgActivos, $textoMensaje, "50%", Utilidades::ESTILO_MENSAJE_ADVERTENCIA);
        //oculta la grilla
        $this->dgActivos->Visible = false;
      }
    }
  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 11/11/2011
   */
  private function inicializaControles($isPostBack) {
    try {
      $registrosPorPaginaDgPorAprobar = $this->txtFiltroRegistrosPorPaginaDgPorAprobar->Text;
      $registrosPorPaginaDgActivos = $this->txtFiltroRegistrosPorPaginaDgActivos->Text;
      $idEmpresa = Utilidades::obtenerIdEmpresaActiva();

      //-- inicializacion de controles que dependen del postBack --
      if (!$isPostBack) {
        $this->seleccionarEmpresa();
      }

      //-- inicializacion de controles que NO dependen del postBack --
      if($registrosPorPaginaDgPorAprobar == "") { $this->txtFiltroRegistrosPorPaginaDgPorAprobar->Text = self::REGISTROS_POR_PAGINA_DEFECTO; }
      if($registrosPorPaginaDgActivos == "") { $this->txtFiltroRegistrosPorPaginaDgActivos->Text = self::REGISTROS_POR_PAGINA_DEFECTO; }
      $this->btnFiltroDgPorAprobar->Attributes->Add("onclick", "return(validarFormularioBusquedaHomePorAprobar())");
      $this->btnFiltroDgActivos->Attributes->Add("onclick", "return(validarFormularioBusquedaHomeActivos())");
      $this->ddlWorkflowDgPorAprobar->setFiltradoPorId($idEmpresa);
      $this->ddlWorkflowDgActivos->setFiltradoPorId($idEmpresa);

      //verifica los permisos sobre los controles
      $this->verificarPermisos();
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $this->pnlContenido->Visible = true;
    if(!$this->pnlContenido->Visible) {
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }

  /**
   * muestra pop up para que el usuario seleccione una empresa
   * @author JBC, 11/11/2011
   */
  private function seleccionarEmpresa() {
    $oUsuarioWf = new UsuarioWf();
    $oUsuarioWf = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
    $strScript = "jQuery(document).ready(function() {
                    seleccionarEmpresa({mostrarBotonCerrar:false});
                  });";

    if ($oUsuarioWf->getIdPerfil() == Perfil::KEY_PERFIL_ADMINISTRADOR) {
      $this->Page->ClientScript->registerEndScript("seleccionarEmpresa", $strScript);
    } else {
      $arrEmpresa = $oUsuarioWf->getEmpresas();
      $bolEmpresaActiva = false;
      if (count($arrEmpresa) > 1) {
        foreach ($arrEmpresa as $value) {
          if ($value["Activo"] == "1") {
            $bolEmpresaActiva = true;
          }
        }
        if (!$bolEmpresaActiva) {
          $this->Page->ClientScript->registerEndScript("seleccionarEmpresa", $strScript);
        }
      } else {
        $arrNuevaEmpresa = array();
        foreach ($arrEmpresa as $value) {
          $value["Activo"] = "1";
          $arrNuevaEmpresa[] = $value;
        }
        $oUsuarioWf->setEmpresas($arrNuevaEmpresa);
        Utilidades::grabarSessionPorNombre(Usuario::NOMBRE_ENTIDAD, $oUsuarioWf);
      }
    }
  }

  /**
   * graba los filtros en sesion
   * @author VSR, 31/05/2012
   */
  private function grabarFiltrosSesionDgPorAprobar(){
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arrFiltros = array();
      $arrFiltros[$this->txtFiltroNombreFlujoDgPorAprobar->ClientID] = $this->txtFiltroNombreFlujoDgPorAprobar->Text;
      $arrFiltros[$this->ddlWorkflowDgPorAprobar->ClientID] = $this->ddlWorkflowDgPorAprobar->obtenerSelectedValue();
      $arrFiltros[$this->txtFiltroRegistrosPorPaginaDgPorAprobar->ClientID] = $this->txtFiltroRegistrosPorPaginaDgPorAprobar->Text;
      $arrFiltros[$this->dgPorAprobar->ClientID."CurrentPageIndex"] = $this->dgPorAprobar->CurrentPageIndex;

      //guarda el resultado en session
      Utilidades::grabarSessionPorNombre($nombrePagina.Utilidades::SESION_SUFIJO_FILTROS.self::SESION_DATOS_POR_APROBAR, $arrFiltros);
      Utilidades::grabarSessionPorNombre(Utilidades::SESION_CARGAR_FILTROS_SESION, "0");
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * graba los filtros en sesion
   * @author VSR, 31/05/2012
   */
  private function grabarFiltrosSesionDgActivos(){
    try {
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arrFiltros = array();
      $arrFiltros[$this->txtFiltroNombreFlujoDgActivos->ClientID] = $this->txtFiltroNombreFlujoDgActivos->Text;
      $arrFiltros[$this->ddlWorkflowDgActivos->ClientID] = $this->ddlWorkflowDgActivos->obtenerSelectedValue();
      $arrFiltros[$this->txtFiltroFechaInicioDgActivos->ClientID] = $this->txtFiltroFechaInicioDgActivos->Text;
      $arrFiltros[$this->txtFiltroFechaTerminoDgActivos->ClientID] = $this->txtFiltroFechaTerminoDgActivos->Text;
      $arrFiltros[$this->txtFiltroRegistrosPorPaginaDgActivos->ClientID] = $this->txtFiltroRegistrosPorPaginaDgActivos->Text;
      $arrFiltros[$this->dgActivos->ClientID."CurrentPageIndex"] = $this->dgActivos->CurrentPageIndex;

      //guarda el resultado en session
      Utilidades::grabarSessionPorNombre($nombrePagina.Utilidades::SESION_SUFIJO_FILTROS.self::SESION_DATOS_ACTIVOS, $arrFiltros);
      Utilidades::grabarSessionPorNombre(Utilidades::SESION_CARGAR_FILTROS_SESION, "0");
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * carga los filtros de la sesion si existen
   * @author VSR, 31/05/2012
   */
  private function cargarFiltrosSesionDgPorAprobar(){
    try {
      //obtiene valores de los controles o de la sesion de filtros
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arrFiltros = Utilidades::obtenerSessionPorNombre($nombrePagina.Utilidades::SESION_SUFIJO_FILTROS.self::SESION_DATOS_POR_APROBAR);
      $cargarFiltrosSesion = Utilidades::isNull(Utilidades::obtenerSessionPorNombre(Utilidades::SESION_CARGAR_FILTROS_SESION),"0");

      if(!Utilidades::isNullOrEmpty($arrFiltros) && $cargarFiltrosSesion == "1"){
        $this->txtFiltroNombreFlujoDgPorAprobar->Text = $arrFiltros[$this->txtFiltroNombreFlujoDgPorAprobar->ClientID];
        $this->ddlWorkflowDgPorAprobar->asignarSelectedValue($arrFiltros[$this->ddlWorkflowDgPorAprobar->ClientID]);
        $this->txtFiltroRegistrosPorPaginaDgPorAprobar->Text = $arrFiltros[$this->txtFiltroRegistrosPorPaginaDgPorAprobar->ClientID];
        $this->dgPorAprobar->PageSize = $this->txtFiltroRegistrosPorPaginaDgPorAprobar->Text;
        $this->dgPorAprobar->CurrentPageIndex = $arrFiltros[$this->dgPorAprobar->ClientID."CurrentPageIndex"];
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * carga los filtros de la sesion si existen
   * @author VSR, 31/05/2012
   */
  private function cargarFiltrosSesionDgActivos(){
    try {
      //obtiene valores de los controles o de la sesion de filtros
      $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
      $arrFiltros = Utilidades::obtenerSessionPorNombre($nombrePagina.Utilidades::SESION_SUFIJO_FILTROS.self::SESION_DATOS_ACTIVOS);
      $cargarFiltrosSesion = Utilidades::isNull(Utilidades::obtenerSessionPorNombre(Utilidades::SESION_CARGAR_FILTROS_SESION),"0");

      if(!Utilidades::isNullOrEmpty($arrFiltros) && $cargarFiltrosSesion == "1"){
        $this->txtFiltroNombreFlujoDgActivos->Text = $arrFiltros[$this->txtFiltroNombreFlujoDgActivos->ClientID];
        $this->ddlWorkflowDgActivos->asignarSelectedValue($arrFiltros[$this->ddlWorkflowDgActivos->ClientID]);
        $this->txtFiltroFechaInicioDgActivos->Text = $arrFiltros[$this->txtFiltroFechaInicioDgActivos->ClientID];
        $this->txtFiltroFechaTerminoDgActivos->Text = $arrFiltros[$this->txtFiltroFechaTerminoDgActivos->ClientID];
        $this->txtFiltroRegistrosPorPaginaDgActivos->Text = $arrFiltros[$this->txtFiltroRegistrosPorPaginaDgActivos->ClientID];
        $this->dgActivos->PageSize = $this->txtFiltroRegistrosPorPaginaDgActivos->Text;
        $this->dgActivos->CurrentPageIndex = $arrFiltros[$this->dgActivos->ClientID."CurrentPageIndex"];
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }


//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    $this->inicializaControles($this->IsPostBack);
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;
    
    //si viene la primera vez obtenemos dato y actualizamos interfaz
    if(!$this->IsPostBack) {
      $this->obtenerDatos("");
      $this->actualizaInterfaz("");
    }

  }

  public function btnFiltroDgPorAprobarClick($sender, $param) {
    $pageSize = trim($this->txtFiltroRegistrosPorPaginaDgPorAprobar->Text);
    if($pageSize == "" || $pageSize == "0") {
      $pageSize = self::REGISTROS_POR_PAGINA_DEFECTO;
      $this->txtFiltroRegistrosPorPaginaDgPorAprobar->Text = $pageSize;
    }
    //asigna total de registros por pagina
    $this->dgPorAprobar->PageSize = $pageSize;
    //Muestra la primera pagina del paginador
    $this->dgPorAprobar->CurrentPageIndex = 0;
    $this->grabarFiltrosSesionDgPorAprobar();
    $this->obtenerDatos(self::SESION_DATOS_POR_APROBAR);
    $this->actualizaInterfaz(self::SESION_DATOS_POR_APROBAR);
  }

  public function btnFiltroDgActivosClick($sender, $param) {
    $pageSize = trim($this->txtFiltroRegistrosPorPaginaDgActivos->Text);
    if($pageSize == "" || $pageSize == "0") {
      $pageSize = self::REGISTROS_POR_PAGINA_DEFECTO;
      $this->txtFiltroRegistrosPorPaginaDgActivos->Text = $pageSize;
    }
    //asigna total de registros por pagina
    $this->dgActivos->PageSize = $pageSize;
    //Muestra la primera pagina del paginador
    $this->dgActivos->CurrentPageIndex = 0;
    $this->grabarFiltrosSesionDgActivos();
    $this->obtenerDatos(self::SESION_DATOS_ACTIVOS);
    $this->actualizaInterfaz(self::SESION_DATOS_ACTIVOS);
  }

  public function onSortDgPorAprobar($sender, $param) {
    $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS_POR_APROBAR);
    $campoOrdenActualDataGrid = Utilidades::isNull(Utilidades::obtenerSessionPorNombre(self::CAMPO_ORDEN_DATAGRID_POR_APROBAR),"");
    //obtiene el nuevo orden del arreglo
    $arr = Utilidades::obtenerSortArray($arr, $campoOrdenActualDataGrid, $param->SortExpression);
    //graba el orden actual
    Utilidades::grabarSessionPorNombre(self::CAMPO_ORDEN_DATAGRID_POR_APROBAR, $campoOrdenActualDataGrid);
    //graba el array ordenado
    Utilidades::grabarSessionPorNombre(self::SESION_DATOS_POR_APROBAR, $arr);
    //asigna
    $this->actualizaInterfaz(self::SESION_DATOS_POR_APROBAR);
  }

  public function onSortDgActivos($sender, $param) {
    $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS_ACTIVOS);
    $campoOrdenActualDataGrid = Utilidades::isNull(Utilidades::obtenerSessionPorNombre(self::CAMPO_ORDEN_DATAGRID_ACTIVOS),"");
    //obtiene el nuevo orden del arreglo
    $arr = Utilidades::obtenerSortArray($arr, $campoOrdenActualDataGrid, $param->SortExpression);
    //graba el orden actual
    Utilidades::grabarSessionPorNombre(self::CAMPO_ORDEN_DATAGRID_ACTIVOS, $campoOrdenActualDataGrid);
    //graba el array ordenado
    Utilidades::grabarSessionPorNombre(self::SESION_DATOS_ACTIVOS, $arr);
    //asigna
    $this->actualizaInterfaz(self::SESION_DATOS_ACTIVOS);
  }

  public function onChangePageDgPorAprobar($sender, $param) {
    $this->dgPorAprobar->CurrentPageIndex = $param->NewPageIndex;
    $this->grabarFiltrosSesionDgPorAprobar();
    $this->actualizaInterfaz(self::SESION_DATOS_POR_APROBAR);
  }

  public function onChangePageDgActivos($sender, $param) {
    $this->dgActivos->CurrentPageIndex = $param->NewPageIndex;
    $this->grabarFiltrosSesionDgActivos();
    $this->actualizaInterfaz(self::SESION_DATOS_ACTIVOS);
  }

  public function onPagerCreatedDataGrid($sender, $param) {
    $param->Pager->Controls->insertAt(0, "<span class=\"cssPaginadorNormal\">P&aacute;gina:</span> ");
  }

  public function onDataBoundDgPorAprobar($sender, $param) {
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $item = $param->Item;
    if ($item->ItemType === 'Item' || $item->ItemType === 'AlternatingItem') {
      $txtNombreFlujo = $item->findControl("txtNombreFlujo");
      $txtIdFlujo = $item->findControl("txtIdFlujo");
      $txtIdWorkflow = $item->findControl("txtIdWorkflow");
      $txtIdEmpresa = $item->findControl("txtIdEmpresa");
      $txtIdPaso = $item->findControl("txtIdPaso");
      $txtClase = $item->findControl("txtClase");
      $txtIdCache = $item->findControl("txtIdCache");
      $txtIdHistorial = $item->findControl("txtIdHistorial");
      $txtValorPlazo = $item->findControl("txtValorPlazo");
      $txtUnidadMedidaPlazo = $item->findControl("txtUnidadMedidaPlazo");
      $txtValorSemaforoAmarillo = $item->findControl("txtValorSemaforoAmarillo");
      $txtUnidadMedidaSemaforoAmarillo = $item->findControl("txtUnidadMedidaSemaforoAmarillo");
      $txtDiferenciaEnMinutos = $item->findControl("txtDiferenciaEnMinutos");
      $txtValorPlazoTotal = $item->findControl("txtValorPlazoTotal");
      $txtUnidadMedidaPlazoTotal = $item->findControl("txtUnidadMedidaPlazoTotal");
      $txtDiferenciaEnMinutosPlazoTotal = $item->findControl("txtDiferenciaEnMinutosPlazoTotal");
      $lblNombreFlujo = $item->findControl("lblNombreFlujo");
      $lblEstado = $item->findControl("lblEstado");
      $lblDiasAtraso = $item->findControl("lblDiasAtraso");

      //formatea valores
      $valorDiferenciaEnMinutos = Utilidades::isNull($txtDiferenciaEnMinutos->value, 0);
      $valorPlazo = Utilidades::isNull($txtValorPlazo->value, 0);
      $valorUnidadMedidaPlazo = Utilidades::isNull($txtUnidadMedidaPlazo->value, 0);
      $valorSemaforoAmarillo = Utilidades::isNull($txtValorSemaforoAmarillo->value, 0);
      $valorUnidadMedidaSemaforoAmarillo = Utilidades::isNull($txtUnidadMedidaSemaforoAmarillo->value, 0);
      $valorPlazoTotal = Utilidades::isNull($txtValorPlazoTotal->value, 0);
      $valorUnidadMedidaPlazoTotal = Utilidades::isNull($txtUnidadMedidaPlazoTotal->value, 0);
      $valorDiferenciaEnMinutosPlazoTotal = Utilidades::isNull($txtDiferenciaEnMinutosPlazoTotal->value, 0);
      $imgColorEstado = Utilidades::obtenerImagenColorSemaforo($valorDiferenciaEnMinutos, $valorPlazo, $valorUnidadMedidaPlazo, $valorSemaforoAmarillo, $valorUnidadMedidaSemaforoAmarillo, $diasAtraso);
      $colorFlujo = Utilidades::obtenerColorFlujo($valorDiferenciaEnMinutosPlazoTotal, $valorPlazoTotal, $valorUnidadMedidaPlazoTotal, $diasAtrasoFlujo, "Flujo");
      $diasAtrasoFlujo = ($colorFlujo == WfFlujo::COLOR_ROJO) ? "<br/>".$diasAtrasoFlujo : "";
      $replicarDatos = "0";
      $cargarFiltrosSesion = "1";

      $queryString = Utilidades::obtenerQueryStringFlujo(Utilidades::QUERYSTRING_FLUJO_NORMAL,
                                                          "",
                                                          $txtIdFlujo->Value,
                                                          $txtIdWorkflow->Value,
                                                          $txtIdEmpresa->Value,
                                                          $txtIdPaso->Value,
                                                          $txtIdCache->Value,
                                                          $txtIdHistorial->Value,
                                                          $replicarDatos,
                                                          $cargarFiltrosSesion,
                                                          $paginaActual);
      
      $lblEstado->Text = "<img src='" . $this->Page->Theme->BaseUrl . "/img/18/" . $imgColorEstado . "' alt=''>";
      $strLink = "index.php?page=Workflow." . $txtClase->Value . "&a=" . $queryString;
      $lblDiasAtraso->Text = $diasAtraso;
      $lblNombreFlujo->Text = "<a href=\"".$strLink."\" class=\"cssLink\">".$txtNombreFlujo->Value."</a>".$diasAtrasoFlujo;

      //limpia los controles
      $txtNombreFlujo->Value = "";
      $txtIdFlujo->Value = "";
      $txtIdWorkflow->Value = "";
      $txtIdEmpresa->Value = "";
      $txtIdPaso->Value = "";
      $txtClase->Value = "";
      $txtIdCache->Value = "";
      $txtIdHistorial->Value = "";
      $txtValorPlazo->Value = "";
      $txtUnidadMedidaPlazo->Value = "";
      $txtValorSemaforoAmarillo->Value = "";
      $txtUnidadMedidaSemaforoAmarillo->Value = "";
      $txtDiferenciaEnMinutos->Value = "";
      $txtValorPlazoTotal->Value = "";
      $txtUnidadMedidaPlazoTotal->Value = "";
      $txtDiferenciaEnMinutosPlazoTotal->Value = "";
    }
  }

  public function onDataBoundDgActivos($sender, $param) {
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $sb = new StringBuilder();
    $themeBaseUrl = $this->txtThemeBaseUrl->Value;
    $item = $param->Item;
    
    if ($item->ItemType === 'Item' || $item->ItemType === 'AlternatingItem') {
      $txtNombreFlujo = $item->findControl("txtNombreFlujo");
      $txtIdFlujo = $item->findControl("txtIdFlujo");
      $txtIdWorkflow = $item->findControl("txtIdWorkflow");
      $txtIdEmpresa = $item->findControl("txtIdEmpresa");
      $txtIdPaso = $item->findControl("txtIdPaso");
      $txtClase = $item->findControl("txtClase");
      $txtIdCache = $item->findControl("txtIdCache");
      $txtIdHistorial = $item->findControl("txtIdHistorial");
      $txtValorPlazo = $item->findControl("txtValorPlazo");
      $txtUnidadMedidaPlazo = $item->findControl("txtUnidadMedidaPlazo");
      $txtValorSemaforoAmarillo = $item->findControl("txtValorSemaforoAmarillo");
      $txtUnidadMedidaSemaforoAmarillo = $item->findControl("txtUnidadMedidaSemaforoAmarillo");
      $txtDiferenciaEnMinutos = $item->findControl("txtDiferenciaEnMinutos");
      $txtValorPlazoTotal = $item->findControl("txtValorPlazoTotal");
      $txtUnidadMedidaPlazoTotal = $item->findControl("txtUnidadMedidaPlazoTotal");
      $txtDiferenciaEnMinutosPlazoTotal = $item->findControl("txtDiferenciaEnMinutosPlazoTotal");
      $txtAprobadores = $item->findControl("txtAprobadores");
      $lblNombreFlujo = $item->findControl("lblNombreFlujo");
      $lblEstado = $item->findControl("lblEstado");
      $lblAprobador = $item->findControl("lblAprobador");
      $lblDiasAtraso = $item->findControl("lblDiasAtraso");

      //formatea valores
      $valorDiferenciaEnMinutos = Utilidades::isNull($txtDiferenciaEnMinutos->value, 0);
      $valorPlazo = Utilidades::isNull($txtValorPlazo->value, 0);
      $valorUnidadMedidaPlazo = Utilidades::isNull($txtUnidadMedidaPlazo->value, 0);
      $valorSemaforoAmarillo = Utilidades::isNull($txtValorSemaforoAmarillo->value, 0);
      $valorUnidadMedidaSemaforoAmarillo = Utilidades::isNull($txtUnidadMedidaSemaforoAmarillo->value, 0);
      $valorPlazoTotal = Utilidades::isNull($txtValorPlazoTotal->value, 0);
      $valorUnidadMedidaPlazoTotal = Utilidades::isNull($txtUnidadMedidaPlazoTotal->value, 0);
      $valorDiferenciaEnMinutosPlazoTotal = Utilidades::isNull($txtDiferenciaEnMinutosPlazoTotal->value, 0);
      $imgColorEstado = Utilidades::obtenerImagenColorSemaforo($valorDiferenciaEnMinutos, $valorPlazo, $valorUnidadMedidaPlazo, $valorSemaforoAmarillo, $valorUnidadMedidaSemaforoAmarillo, $diasAtraso);
      $colorFlujo = Utilidades::obtenerColorFlujo($valorDiferenciaEnMinutosPlazoTotal, $valorPlazoTotal, $valorUnidadMedidaPlazoTotal, $diasAtrasoFlujo, "Flujo");
      $diasAtrasoFlujo = ($colorFlujo == WfFlujo::COLOR_ROJO) ? "<br/>".$diasAtrasoFlujo : "";
      $replicarDatos = "0";
      $cargarFiltrosSesion = "1";
      $nombreTooltips = "tooltips".$txtIdFlujo->Value;
      $tieneTooltips = false;
      $contenidoTooltips = "";

      $queryString = Utilidades::obtenerQueryStringFlujo(Utilidades::QUERYSTRING_FLUJO_NORMAL,
                                                          "",
                                                          $txtIdFlujo->Value,
                                                          $txtIdWorkflow->Value,
                                                          $txtIdEmpresa->Value,
                                                          $txtIdPaso->Value,
                                                          $txtIdCache->Value,
                                                          $txtIdHistorial->Value,
                                                          $replicarDatos,
                                                          $cargarFiltrosSesion,
                                                          $paginaActual);

      $lblEstado->Text = "<img src='" . $this->Page->Theme->BaseUrl . "/img/18/" . $imgColorEstado . "' alt=''>";
      $strLink = "index.php?page=Workflow." . $txtClase->Value . "&a=" . $queryString;
      $lblAprobador->Text = Utilidades::formatearAprobadoresPorPaso($txtAprobadores->Value, $nombreTooltips, $tieneTooltips, $contenidoTooltips, $themeBaseUrl);
      $lblDiasAtraso->Text = $diasAtraso;
      $lblNombreFlujo->Text = "<a href=\"".$strLink."\" class=\"cssLink\">".$txtNombreFlujo->Value."</a>".$diasAtrasoFlujo;

      if($tieneTooltips){
        $sb->appendLine("jQuery(document).ready(function(){");
        $sb->appendLine("  jQuery('#".$nombreTooltips."').tooltip('".$contenidoTooltips."', { hook: 1, mode:'bc', skin:'blue' });");
        $sb->appendLine("});");
        $this->Page->ClientScript->registerEndScript($nombreTooltips, $sb->toString());
      }

      //limpia los controles
      $txtNombreFlujo->Value = "";
      $txtIdFlujo->Value = "";
      $txtIdWorkflow->Value = "";
      $txtIdEmpresa->Value = "";
      $txtIdPaso->Value = "";
      $txtClase->Value = "";
      $txtIdCache->Value = "";
      $txtIdHistorial->Value = "";
      $txtValorPlazo->Value = "";
      $txtUnidadMedidaPlazo->Value = "";
      $txtValorSemaforoAmarillo->Value = "";
      $txtUnidadMedidaSemaforoAmarillo->Value = "";
      $txtDiferenciaEnMinutos->Value = "";
      $txtValorPlazoTotal->Value = "";
      $txtUnidadMedidaPlazoTotal->Value = "";
      $txtDiferenciaEnMinutosPlazoTotal->Value = "";
    }
  }

//</editor-fold>
}
?>

